﻿//using System.Collections;
//using System.Windows.Forms;
//using System;
//using System.Collections.Generic;
//using Cataloger.Kontrolki;
//namespace Cataloger.Pomocnicze
//{
//    /// <summary>
//    /// This class is an implementation of the 'IComparer' interface.
//    /// </summary>
//    public class SorterListView : IComparer<IObiektCatalogera>
//    {
//        #region Fields (3) 

//        /// <summary>
//        /// Specifies the column to be sorted
//        /// </summary>
//        private ColHeader ColumnToSort;
//        /// <summary>
//        /// Case insensitive comparer object
//        /// </summary>
//        private CaseInsensitiveComparer ObjectCompare;
//        /// <summary>
//        /// Specifies the order in which to sort (i.e. 'Ascending').
//        /// </summary>
//        private SortOrder OrderOfSort;

//        #endregion Fields 

//        #region Constructors (1) 

//        /// <summary>
//        /// Class constructor.  Initializes various elements
//        /// </summary>
//        public SorterListView()
//        {
//            //// Initialize the column to '0'
//            //ColumnToSort = 0;

//            // Initialize the sort order to 'none'
//            OrderOfSort = SortOrder.None;
    
//            // Initialize the CaseInsensitiveComparer object
//            ObjectCompare = new CaseInsensitiveComparer();
//        }

//        #endregion Constructors 

//        #region Properties (2) 

//        /// <summary>
//        /// Gets or sets the order of sorting to apply (for example, 'Ascending' or 'Descending').
//        /// </summary>
//        public SortOrder Order
//        {
//            set
//            {
//                OrderOfSort = value;
//            }
//            get
//            {
//                return OrderOfSort;
//            }
//        }

//        /// <summary>
//        /// Gets or sets the number of the column to which to apply the sorting operation (Defaults to '0').
//        /// </summary>
//        public ColHeader SortColumn
//        {
//            set
//            {
//                ColumnToSort = value;
//            }
//            get
//            {
//                return ColumnToSort;
//            }
//        }

//        #endregion Properties 

//        #region Methods (1) 

//        // Public Methods (1) 

//        /// <summary>
//        /// This method is inherited from the IComparer interface.  It compares the two objects passed using a case insensitive comparison.
//        /// </summary>
//        /// <param name="x">First object to be compared</param>
//        /// <param name="y">Second object to be compared</param>
//        /// <returns>The result of the comparison. "0" if equal, negative if 'x' is less than 'y' and positive if 'x' is greater than 'y'</returns>
//        public int Compare(ListViewItemCataloger x, ListViewItemCataloger y)
//        {
//            int compareResult;
//            ListViewItemCataloger listviewX, listviewY;

//            // Cast the objects to be compared to ListViewItem objects
//            listviewX = (ListViewItemCataloger)x;
//            listviewY = (ListViewItemCataloger)y;

//            switch (SortColumn.TypSortowania)
//            {
//                case RodzajSortDanych.Data:
//                    {
//                        try
//                        {
//                            compareResult = DateTime.Compare(DateTime.Parse(listviewX.SubItems[ColumnToSort.Index].Text), DateTime.Parse(listviewY.SubItems[ColumnToSort.Index].Text));
//                            if (OrderOfSort == SortOrder.Ascending)
//                            {
//                                return compareResult;
//                            }
//                            else if (OrderOfSort == SortOrder.Descending)
//                            {
//                                return (-compareResult);
//                            }
//                            else
//                            {
//                                return 0;
//                            }
//                        }
//                        catch {}
//                    }
//                    break;
//                case RodzajSortDanych.Tekst:
//                    {
//                        try
//                        {
//                            compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort.Index].Text, listviewY.SubItems[ColumnToSort.Index].Text);
//                            if (OrderOfSort == SortOrder.Ascending)
//                            {
//                                return compareResult;
//                            }
//                            else if (OrderOfSort == SortOrder.Descending)
//                            {
//                                return (-compareResult);
//                            }
//                            else
//                            {
//                                return 0;
//                            }
//                        }
//                        catch { }
//                    }
//                    break;
//                case RodzajSortDanych.Wielkosc:
//                    {
//                        try
//                        {
//                            long l1 = listviewX.SubItems[ColumnToSort.Index].Text.ZamienNaBajty();
//                            long l2 = listviewY.SubItems[ColumnToSort.Index].Text.ZamienNaBajty();
//                            if (OrderOfSort == SortOrder.Ascending)
//                            {
//                                if (l1 > l2)
//                                    return 1;
//                                else if (l1 < l2)
//                                    return -1;
//                                else
//                                    return 0;
//                            }
//                            else if (OrderOfSort == SortOrder.Descending)
//                            {
//                                if (l1 > l2)
//                                    return -1;
//                                else if (l1 < l2)
//                                    return 1;
//                                else
//                                    return 0;
//                            }
//                            else
//                            {
//                                return 0;
//                            }
//                        }
//                        catch
//                        {

//                        }
//                    }
//                    break;
//                default:
//                    break;
//            }




//            return 0;


//        }

//        #endregion Methods 
    
//        #region IComparer<IObiektCatalogera> Members

//        public int Compare(IObiektCatalogera x, IObiektCatalogera y)
//        {
//            int compareResult;
//            IObiektCatalogera obiektX=x;
//            IObiektCatalogera obiektY=y;

//            if (obiektX is Katalog)
//            {
//                Katalog tempX, tempY;
//                tempX = obiektX as Katalog;
//                tempY = obiektY as Katalog;
//            }
//            else if (obiektX is Nosnik)
//            {
//                Nosnik tempX, tempY;
//                tempX = obiektX as Nosnik;
//                tempY = obiektY as Nosnik;
//            }
//            else if (obiektX is ObiektDyskowy)
//            {
//                ObiektDyskowy tempX, tempY;
//                tempX = obiektX as ObiektDyskowy;
//                tempY = obiektY as ObiektDyskowy;
//            }

//            switch (SortColumn.TypSortowania)
//            {
//                case RodzajSortDanych.Data:
//                    {
//                        //try
//                        //{
//                        //    compareResult = DateTime.Compare(DateTime.Parse(listviewX.SubItems[ColumnToSort.Index].Text), DateTime.Parse(listviewY.SubItems[ColumnToSort.Index].Text));
//                        //    if (OrderOfSort == SortOrder.Ascending)
//                        //    {
//                        //        return compareResult;
//                        //    }
//                        //    else if (OrderOfSort == SortOrder.Descending)
//                        //    {
//                        //        return (-compareResult);
//                        //    }
//                        //    else
//                        //    {
//                        //        return 0;
//                        //    }
//                        //}
//                        //catch { }
//                    }
//                    break;
//                case RodzajSortDanych.Tekst:
//                    {
//                        try
//                        {
//                            //compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort.Index].Text, listviewY.SubItems[ColumnToSort.Index].Text);
//                            //if (OrderOfSort == SortOrder.Ascending)
//                            //{
//                            //    return compareResult;
//                            //}
//                            //else if (OrderOfSort == SortOrder.Descending)
//                            //{
//                            //    return (-compareResult);
//                            //}
//                            //else
//                            //{
//                            //    return 0;
//                            //}
//                        }
//                        catch { }
//                    }
//                    break;
//                case RodzajSortDanych.Wielkosc:
//                    {
//                        //try
//                        //{
//                        //    long l1 = listviewX.SubItems[ColumnToSort.Index].Text.ZamienNaBajty();
//                        //    long l2 = listviewY.SubItems[ColumnToSort.Index].Text.ZamienNaBajty();
//                        //    if (OrderOfSort == SortOrder.Ascending)
//                        //    {
//                        //        if (l1 > l2)
//                        //            return 1;
//                        //        else if (l1 < l2)
//                        //            return -1;
//                        //        else
//                        //            return 0;
//                        //    }
//                        //    else if (OrderOfSort == SortOrder.Descending)
//                        //    {
//                        //        if (l1 > l2)
//                        //            return -1;
//                        //        else if (l1 < l2)
//                        //            return 1;
//                        //        else
//                        //            return 0;
//                        //    }
//                        //    else
//                        //    {
//                        //        return 0;
//                        //    }
//                        //}
//                        //catch
//                        //{

//                        //}
//                    }
//                    break;
//                default:
//                    break;
//            }




//            return 0;

//        }

//        #endregion
//    }
//}